From 220a51e7cb928015d9c6d7a46aed40f3a0b3c966 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 19 Aug 2018 03:00:52 +0000 Subject: [PATCH] entry completion: stop using subsurfaces Instead, use a popup and gdk_surface_move_to_rect. I have not tried to reproduce all details of the old positioning logic, but moving the popup above/below the entry works as before. --- gtk/gtkentrycompletion.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index af90772162..bf1a7a425c 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -577,10 +577,8 @@ gtk_entry_completion_constructed (GObject *object) /* pack it all */ priv->popup_window = gtk_window_new (GTK_WINDOW_POPUP); - gtk_window_set_use_subsurface (GTK_WINDOW (priv->popup_window), TRUE); gtk_window_set_resizable (GTK_WINDOW (priv->popup_window), FALSE); - gtk_window_set_type_hint (GTK_WINDOW(priv->popup_window), - GDK_SURFACE_TYPE_HINT_COMBO); + gtk_window_set_type_hint (GTK_WINDOW(priv->popup_window), GDK_SURFACE_TYPE_HINT_COMBO); controller = gtk_event_controller_key_new (); g_signal_connect (controller, "key-pressed", @@ -1463,7 +1461,14 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion) gtk_tree_path_free (path); } - gtk_window_move (GTK_WINDOW (completion->priv->popup_window), x, y); + gdk_surface_move_to_rect (_gtk_widget_get_surface (completion->priv->popup_window), + &allocation, + GDK_GRAVITY_SOUTH, + GDK_GRAVITY_NORTH, + GDK_ANCHOR_FLIP_Y | GDK_ANCHOR_SLIDE_X, + 0, 0); + + gtk_widget_show (completion->priv->popup_window); } static void -- 2.30.2